﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.HtmlControls;

using Telerik.Web.UI;
using SMA.GENTEv1;

public partial class Protegidos_Empresas_Cadastros__wf_wfBeneficiosVT : System.Web.UI.Page
{
    protected int idWfConfig = 0;

    protected void Page_Load(object sender, EventArgs e)
    {
        try
        {
            if (Request.QueryString["IdWfConfig"] != null)
                idWfConfig = Int32.Parse(Request.QueryString["IdWfConfig"].ToString());

            if (!IsPostBack)
            {
                ExibeParametros();
            }

            AtivaAjax();
            OcultaMsgPagina(true);
        }
        catch (Exception ex)
        {
            ExibirMensagem(true, ex.Message);
        }
    }

    #region Eventos

    protected void RadAjaxManager1_AjaxRequest(object sender, AjaxRequestEventArgs e)
    {
        try
        {
            CarregarTudo();
            OcultaMsgPagina(true);
        }
        catch (Exception ex)
        {
            ExibirMensagem(true, ex.Message);
        }
    }

    #region Alerta
    protected void GridAlerta_DeleteCommand(object source, GridCommandEventArgs e)
    {
        try
        {
            int id = int.Parse((e.Item as GridDataItem).OwnerTableView.DataKeyValues[e.Item.ItemIndex]["IdWfConfigParametro"].ToString());

            WorkflowConfigParametro wfParametro = new WorkflowConfigParametro(id);
            wfParametro.Excluir();

            CarregarTudo();
        }
        catch (Exception ex)
        {
            ExibirMensagem(true, ex.Message);
        }
    }

    protected void GridAlerta_ItemCreated(object sender, GridItemEventArgs e)
    {
        try
        {
            if (e.Item is GridCommandItem)
            {
                int total = 0;

                if (e.Item.OwnerTableView.DataSourceCount != null)
                    total = e.Item.OwnerTableView.DataSourceCount;

                if (total >= 4)
                {
                    HtmlGenericControl btnInsert = e.Item.FindControl("dvGridInsert") as HtmlGenericControl;
                    btnInsert.Visible = false;
                }
            }
        }
        catch (Exception ex)
        {
            ExibirMensagem(true, ex.Message);
        }
    }
    #endregion

    #region Pendencia
    protected void GridPendencia_DeleteCommand(object source, GridCommandEventArgs e)
    {
        try
        {
            int id = int.Parse((e.Item as GridDataItem).OwnerTableView.DataKeyValues[e.Item.ItemIndex]["IdWfConfigParametro"].ToString());

            WorkflowConfigParametro wfParametro = new WorkflowConfigParametro(id);
            wfParametro.Excluir();

            CarregarTudo();
        }
        catch (Exception ex)
        {
            ExibirMensagem(true, ex.Message);
        }
    }

    protected void GridPendencia_ItemCreated(object sender, GridItemEventArgs e)
    {
        try
        {
            if (e.Item is GridCommandItem)
            {
                int total = 0;

                if (e.Item.OwnerTableView.DataSourceCount != null)
                    total = e.Item.OwnerTableView.DataSourceCount;

                if (total >= 4)
                {
                    HtmlGenericControl btnInsert = e.Item.FindControl("dvGridInsert") as HtmlGenericControl;
                    btnInsert.Visible = false;
                }
            }
        }
        catch (Exception ex)
        {
            ExibirMensagem(true, ex.Message);
        }
    }
    #endregion

    #endregion

    #region Metodos
    private void AtivaAjax()
    {
        try
        {
            WorkflowConfigData wfConfigData = new WorkflowConfigData();
            List<WorkflowConfigData> listWkConfigData = wfConfigData.SelectPor(idWfConfig);

            foreach (WorkflowConfigData item in listWkConfigData)
            {
                switch (item.TipoPeriodicidade.IdTipoPeriodicidade)
                {
                    case 3:
                        //Pagamento Unico
                        RadAjaxManager1.AjaxSettings.AddAjaxSetting(RadAjaxManager1, GridtpPagUnicoA, RadAjaxLoadingPanel1);
                        RadAjaxManager1.AjaxSettings.AddAjaxSetting(RadAjaxManager1, GridtpPagUnicoP, RadAjaxLoadingPanel1);
                        break;
                    case 4:
                        //Adiantamento
                        RadAjaxManager1.AjaxSettings.AddAjaxSetting(RadAjaxManager1, GridTpAdiantA, RadAjaxLoadingPanel1);
                        RadAjaxManager1.AjaxSettings.AddAjaxSetting(RadAjaxManager1, GridTpAdiantP, RadAjaxLoadingPanel1);
                        break;
                    case 5:
                        if (item.TipoPagamento.IdTipoPagamento == 14)
                        {
                            //13° - Pagamento 1° Parcela
                            RadAjaxManager1.AjaxSettings.AddAjaxSetting(RadAjaxManager1, GridTp113A, RadAjaxLoadingPanel1);
                            RadAjaxManager1.AjaxSettings.AddAjaxSetting(RadAjaxManager1, GridTp113P, RadAjaxLoadingPanel1);
                        }
                        else if (item.TipoPagamento.IdTipoPagamento == 15)
                        {
                            //13° - Pagamento 2° Parcela
                            RadAjaxManager1.AjaxSettings.AddAjaxSetting(RadAjaxManager1, GridTp213A, RadAjaxLoadingPanel1);
                            RadAjaxManager1.AjaxSettings.AddAjaxSetting(RadAjaxManager1, GridTp213P, RadAjaxLoadingPanel1);
                        }
                        break;
                }
            }
        }
        catch (Exception ex)
        {
            throw ex;
        }
    }

    private void ExibeParametros()
    {
        try
        {
            //1	Pagamento Principal
            //2	Pagamento Adiantamento
            //3	Pagamento Unico
            //4	13° - Pagamento 1° Parcela
            //5	13° - Pagamento 2ª Parcela

            dvPagUnico.Visible = false;
            //dvPagPrincipal.Visible = false;
            dvAdiantamento.Visible = false;
            dv113.Visible = false;
            dv213.Visible = false;

            WorkflowConfigData wfConfigData = new WorkflowConfigData();
            List<WorkflowConfigData> listWkConfigData = wfConfigData.SelectPor(idWfConfig);

            foreach (WorkflowConfigData item in listWkConfigData)
            {
                switch (item.TipoPeriodicidade.IdTipoPeriodicidade)
                {
                    case 3:
                        dvPagUnico.Visible = true;
                        CarregarPagUnicoAlerta(item.IdWfConfigData);
                        CarregarPagUnicoAviso(item.IdWfConfigData);
                        hdIdWfConfigData_tpPagUnico.Value = item.IdWfConfigData.ToString();
                        break;
                    case 4:
                        dvAdiantamento.Visible = true;
                        CarregarAdiantamentoAlerta(item.IdWfConfigData);
                        CarregarAdiantamentoAviso(item.IdWfConfigData);
                        hIdWfConfigData_tpAdiant.Value = item.IdWfConfigData.ToString();
                        break;
                    case 5:
                        if (item.TipoPagamento.IdTipoPagamento == 14)
                        {
                            dv113.Visible = true;
                            Carregar113Alerta(item.IdWfConfigData);
                            Carregar113Aviso(item.IdWfConfigData);
                            hIdWfConfigData_tp113.Value = item.IdWfConfigData.ToString();
                        }
                        else if (item.TipoPagamento.IdTipoPagamento == 15)
                        {
                            dv213.Visible = true;
                            Carregar213Alerta(item.IdWfConfigData);
                            Carregar213Aviso(item.IdWfConfigData);
                            hIdWfConfigData_tp213.Value = item.IdWfConfigData.ToString();
                        }
                        break;
                }
            }
        }
        catch (Exception ex)
        {
            throw ex;
        }
    }

    private void CarregarTudo()
    {
        try
        {
            //Pagamenoto Unico
            if (Convert.ToInt32(hdIdWfConfigData_tpPagUnico.Value) != 0)
            {
                CarregarPagUnicoAlerta(Convert.ToInt32(hdIdWfConfigData_tpPagUnico.Value));
                CarregarPagUnicoAviso(Convert.ToInt32(hdIdWfConfigData_tpPagUnico.Value));
            }

            //Adiantamento
            if (Convert.ToInt32(hIdWfConfigData_tpAdiant.Value) != 0)
            {
                CarregarAdiantamentoAlerta(Convert.ToInt32(hIdWfConfigData_tpAdiant.Value));
                CarregarAdiantamentoAviso(Convert.ToInt32(hIdWfConfigData_tpAdiant.Value));
            }

            //1º Parcela - 13º Salário
            if (Convert.ToInt32(hIdWfConfigData_tp113.Value) != 0)
            {
                Carregar113Alerta(Convert.ToInt32(hIdWfConfigData_tp113.Value));
                Carregar113Aviso(Convert.ToInt32(hIdWfConfigData_tp113.Value));
            }

            //2º Parcela - 13º Salário
            if (Convert.ToInt32(hIdWfConfigData_tp213.Value) != 0)
            {
                Carregar213Alerta(Convert.ToInt32(hIdWfConfigData_tp213.Value));
                Carregar213Aviso(Convert.ToInt32(hIdWfConfigData_tp213.Value));
            }
        }
        catch (Exception ex)
        {
            throw ex;
        }
    }

    private List<WorkflowConfigParametro> RetornaWfParametroAlerta(int id, string tipo)
    {
        try
        {
            WorkflowConfigParametro wfParametro = new WorkflowConfigParametro();
            List<WorkflowConfigParametro> listParametrosAlerta = wfParametro.SelectAlerta(id, tipo);

            return listParametrosAlerta;
        }
        catch (Exception ex)
        {
            throw ex;
        }
    }

    private List<WorkflowConfigParametro> RetornaWfParametroAviso(int id, string tipo)
    {
        try
        {
            WorkflowConfigParametro wfParametro = new WorkflowConfigParametro();
            List<WorkflowConfigParametro> listParametrosAlerta = wfParametro.SelectAviso(id, tipo);

            return listParametrosAlerta;
        }
        catch (Exception ex)
        {
            throw ex;
        }
    }

    private void ExibirMensagem(bool _msgErro, string _textoMsg)
    {
        try
        {
            OcultaMsgPagina(false);
            if (_msgErro)
            {
                lblResultado.ForeColor = System.Drawing.Color.Red;
                lblResultado.Text = _textoMsg;
            }
            else
            {
                lblResultado.ForeColor = System.Drawing.Color.Black;
                lblResultado.Text = _textoMsg;
            }
        }
        catch (Exception ex)
        {
            throw ex;
        }
    }

    private void OcultaMsgPagina(bool oculta)
    {
        trMensagem.Visible = !oculta;
    }

    #region Pagamento Unico
    private void CarregarPagUnicoAlerta(int idWfConfigData)
    {
        try
        {
            GridtpPagUnicoA.DataSource = RetornaWfParametroAlerta(idWfConfigData, "Composto");
            GridtpPagUnicoA.DataBind();
        }
        catch (Exception ex)
        {
            throw ex;
        }
    }
    private void CarregarPagUnicoAviso(int idWfConfigData)
    {
        try
        {
            GridtpPagUnicoP.DataSource = RetornaWfParametroAviso(idWfConfigData, "Composto");
            GridtpPagUnicoP.DataBind();
        }
        catch (Exception ex)
        {
            throw ex;
        }
    }
    #endregion

    #region Adiantamento
    private void CarregarAdiantamentoAlerta(int idWfConfigData)
    {
        try
        {
            GridTpAdiantA.DataSource = RetornaWfParametroAlerta(idWfConfigData, "Composto");
            GridTpAdiantA.DataBind();
        }
        catch (Exception ex)
        {
            throw ex;
        }
    }
    private void CarregarAdiantamentoAviso(int idWfConfigData)
    {
        try
        {
            GridTpAdiantP.DataSource = RetornaWfParametroAviso(idWfConfigData, "Composto");
            GridTpAdiantP.DataBind();
        }
        catch (Exception ex)
        {
            throw ex;
        }
    }
    #endregion

    #region 1º Parcela - 13º Salário
    private void Carregar113Alerta(int idWfConfigData)
    {
        try
        {
            GridTp113A.DataSource = RetornaWfParametroAlerta(idWfConfigData, "Composto");
            GridTp113A.DataBind();
        }
        catch (Exception ex)
        {
            throw ex;
        }
    }
    private void Carregar113Aviso(int idWfConfigData)
    {
        try
        {
            GridTp113P.DataSource = RetornaWfParametroAviso(idWfConfigData, "Composto");
            GridTp113P.DataBind();
        }
        catch (Exception ex)
        {
            throw ex;
        }
    }
    #endregion

    #region 2º Parcela - 13º Salário
    private void Carregar213Alerta(int idWfConfigData)
    {
        try
        {
            GridTp213A.DataSource = RetornaWfParametroAlerta(idWfConfigData, "Composto");
            GridTp213A.DataBind();
        }
        catch (Exception ex)
        {
            throw ex;
        }
    }
    private void Carregar213Aviso(int idWfConfigData)
    {
        try
        {
            GridTp213P.DataSource = RetornaWfParametroAviso(idWfConfigData, "Composto");
            GridTp213P.DataBind();
        }
        catch (Exception ex)
        {
            throw ex;
        }
    }
    #endregion
    #endregion
}
